using UnityEngine;
using Puerts;                                       // 引用 Puerts
using System.IO;

namespace lion {
    public class Main : JsLancher {
        [Tooltip("本地模式\n开启所有脚本及资源将跳过线上检查，读取本地资源")]
        public bool isLocal = true;

        [Tooltip("CDN地址\n如果关闭本地模式，游戏启动时将从该地址检查资源版本")]
        public string cdnAddress = "http://localhost/gameCdn";

        [Tooltip("开启调试\n运行后游戏将被阻断。直至有 IDE 进行连接")]
        public bool isDebug = true;                     // 是否开启调试模式

        [Tooltip("调试端口号\n须与 IDE 的端口一至")]
        public int debugPort = 43990;                   // 调试端口号

        public static JsEnv jsEnv;
        public static JsLoader jsLoader;
        private string scriptsDir = Path.Combine(Application.streamingAssetsPath,"Scripts");

        void Awake(){
            jsLoader = new JsLoader(scriptsDir);
            jsEnv = new JsEnv(jsLoader,debugPort);      // 实例化 js 虚拟机
            RegAction(jsEnv);                           // 为虚拟机注册 Action
            if(isDebug) jsEnv.WaitDebugger();           // 根据判断打开调试

            JsLancher jsLancher = JsLancher.CreateLancher(gameObject,"Main");
        }

        /// <summary>
        /// 为虚拟机注册 Action
        /// todo 额外的 Action 可在此扩充
        /// </summary>
        /// <param name="env"></param>
        protected virtual void RegAction(JsEnv env){
            env.UsingAction<int>();
            env.UsingAction<float>();
            env.UsingAction<string>();
            env.UsingAction<string, string>();
        }
        void Start(){}
        void FixUpdate(){}
        void Update(){}
        void LateUpdate(){}
        void OnDestroy(){}
    }
}
